package com.xiaoshuidi.cloud.module.rooms.service;

import com.xiaoshuidi.cloud.framework.common.pojo.PageResult;
import com.xiaoshuidi.cloud.module.rooms.controller.admin.estimate.vo.*;

import javax.validation.Valid;

/**
 * @Author Feng
 * @date 2023/5/29
 */
public interface IEstimateService {

    /**
     * 计算房屋勘测系数
     *
     * @param req
     * @return
     */
    SurveyResp surveyFactor(SurveyReq req);

    /**
     * 基准价计算
     *
     * @param req
     * @return
     */
    BasicPriceResp basicPrice(BasicPriceReq req);

    /**
     * 装修估价计算
     *
     * @param req
     * @return {@link DecorationEvaluateResp}
     */
    DecorationEvaluateResp decorationEvaluate(DecorationEvaluateReq req);

    /**
     * 租金估算计算
     *
     * @param req
     * @return
     */
    RentEvaluateResp rentEvaluate(RentEvaluateReq req);

    /**
     * 最高价格计算
     *
     * @param req
     * @return
     */
    HighestPriceResp highestPrice(HighestPriceReq req);

    /**
     * 保存 | 修改
     *
     * @param req
     * @return
     */
    Boolean saveOrUpdate(EstimateSaveOrUpdateReq req);

    /**
     * 根据ID获取详情
     *
     * @param id
     * @return
     */
    EstimateResp get(Long id);

    /**
     * 分页查询
     *
     * @param req
     * @return
     */
    PageResult<EstimatePageResp> page(@Valid EstimatePageReq req);

    /**
     * 关联房源
     *
     * @param req
     * @return
     */
    Boolean relatedHouse(RelatedHouseReq req);
}
